feat(action): add per-user volume control via dial#65
feat(action): add per-user volume control via dial#65ImDevinC merged 2 commits intoImDevinC:mainfrom
Conversation
Add UserVolume action that allows adjusting individual user volumes while in a Discord voice channel using a Stream Deck+ dial. Features: - Dial rotation adjusts selected user's volume (±5% per tick, 0-200%) - Dial press cycles through users in the voice channel - Display shows channel name, username, and volume percentage - Real-time updates when users join/leave the channel Also fixes callback cleanup bug in main.py: DiscordCore.cleanup_callbacks() was calling remove_callback() but main.py defined clear_callbacks(). Renamed to remove_callback() for consistency with add_callback().
backend.py
Outdated
There was a problem hiding this comment.
I don't see anywhere this args argument is passed in, am I missing something?
|
One small note, you'll need to update the |
…d.py - Bump version from 1.9.2 to 1.10.0 in manifest.json - Revert callback rename (remove_callback -> clear_callbacks) to be handled in separate bug-fix PR
|
I haven't been able to test the functionality with more than 2 users in the voice chat yet. The expected behavior is that you can cycle between users by pressing the dial. I'm keeping this as a draft until I can verify this works, but happy to merge if you're able to test it or if you think it's okay to merge as-is. |
|
I don't have an SD+ to test with, but what you've done so far looks great. Feel free to remove draft status (you can ignore the GitHub actions error above) |
|
Thanks again! This is now published as 1.10.0 on the StreamController store |
Add per-user volume control via dial
Summary
This PR adds a new UserVolume action that allows Stream Deck+ users to adjust individual Discord user volumes directly from a dial while in a voice channel.
This feature is inspired by the Windows Stream Deck Discord plugin and solves a common pain point: Discord doesn't auto-level audio, so users with different microphone settings can have vastly different volume levels. This action allows quick per-user volume adjustments without leaving your current application/game or opening Discord settings.
Features
Usage
Technical Implementation
New Files:
actions/UserVolume.py- Complete action implementationModified Files:
backend.py- Added voice state subscription methods and user trackingdiscordrpc/asyncdiscord.py- Addedset_user_voice_settings()andget_channel()RPC methodsmain.py- Registered new action, fixed callback method naming bugKey Technical Details:
SET_USER_VOICE_SETTINGScommand for volume controlVOICE_STATE_CREATE/DELETE/UPDATEevents with channel-specific subscriptionsGET_CHANNELresponsesubscribe_voice_states()/unsubscribe_voice_states()backend methods to work around IPC serialization limitationsBug Fix Included
Also fixes callback cleanup bug where
DiscordCore.cleanup_callbacks()calledremove_callback()butmain.pydefinedclear_callbacks(). Renamed toremove_callback()for consistency withadd_callback().Testing Status
Completed:
Pending:
Full testing requires coordination with multiple users in a voice channel. Basic functionality has been verified, but additional testing with 3+ users is recommended before merge.